﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace PRE.Register 
{
    public partial class FrmDangky : DevExpress.XtraEditors.XtraForm
    {
        DAL.EntitesDAL.HocvienDAL _dal = new DAL.EntitesDAL.HocvienDAL();
        BLL.EntitiesBLL.HocvienBLL _bll = new BLL.EntitiesBLL.HocvienBLL();
        DataTable _dtb = new DataTable();

        DAL.EntitesDAL.LophocDAL _dal1 = new DAL.EntitesDAL.LophocDAL();
        BLL.EntitiesBLL.LophocBLL _bll2 = new BLL.EntitiesBLL.LophocBLL();
        DataTable _dtb1 = new DataTable();
        
        DAL.EntitesDAL.KhoahocDAL _dal2 = new DAL.EntitesDAL.KhoahocDAL();

        public static string _maHV;
        public static string _tenHV;
        public static long _soTien;
        public static string _ghichu;
      //  private static bool a, b, c, d;
        public FrmDangky()
        {
            InitializeComponent();
        }

        private void FrmDangky_Load(object sender, EventArgs e)
        {
            EnableButton();
            ReadOnly();

            ckConno.CheckState = CheckState.Unchecked;
            lbSotienno.Visible = false;
            txtSotienno.Visible = false;
            
            _dtb = _dal.Select();
            if (_dtb != null)
            {
                grcMain.DataSource = _dtb;
            }

            DataTable temp = _dal2.Select_Current(DateTime.Now);
            string _makhoa = temp.Rows[0]["Makhoa"] + "";
            _dtb1 = _dal1.Select(_makhoa);
            if (_dtb1 != null)
            {
                cboLop.Properties.DataSource = _dtb1;
            }

            btnThem_Click(sender, e);       
        }

        private void EnableButton(bool isTrue = true)
        {
            btnThem.Visible = isTrue;
            btnRefresh.Visible = isTrue;
            btnThoat.Visible = true;

            btnDangky.Visible = !isTrue;
            btnNhaplai.Visible = !isTrue;
          //  btnHuy.Visible = !isTrue;
        }

        private void ResetTest()
        {
            txtHoten.Text = null;
            txtDiachi.Text = null;
            txtDienthoai.Text = null;

            dteNamsinh.EditValue = DateTime.Now;
            cboLop.ItemIndex = -1;
            radioGioitinh.EditValue = true;

            txtHoten.Focus();
        }

        private void ReadOnly(bool isTrue = true)
        {
            txtHoten.Properties.ReadOnly = isTrue;
            txtDienthoai.Properties.ReadOnly = isTrue;
            txtDiachi.Properties.ReadOnly = isTrue;
            radioGioitinh.Properties.ReadOnly = isTrue;
            cboLop.Properties.ReadOnly = isTrue;
            dteNamsinh.Properties.ReadOnly = isTrue;
        }

        private bool TestInput()
        {
            var a = txtHoten.Text.Length == 0 ? false : true;
            if (!a) txtHoten.Focus();

            var b = txtDienthoai.Text.Length == 0 ? false : true;
            if (!b) txtDienthoai.Focus();

            var c = txtDiachi.Text.Length == 0 ? false : true;
            if (!c) txtDiachi.Focus();

            var d = Convert.ToDateTime(dteNamsinh.EditValue) > DateTime.Now ? false : true;
            if (!d) txtHoten.Focus();

            return a && b && c && d;
        }

        private string Add()
        {
            string kq = "";
            DataTable _tmpHV = _dal.Select_Max();
            DataTable _tmpKhoa = _dal2.Select_Current(DateTime.Now);
            if (_tmpHV != null)
                if (_tmpHV.Rows.Count > 0)
                {
                    string _idHV = _tmpHV.Rows[0]["Ma"] + "";
                    string _idKhoa = _tmpKhoa.Rows[0]["Makhoa"] + "";

                    kq = _bll.AddID(_idKhoa, _idHV);        
                }
            return kq;
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            EnableButton(false);
            ResetTest();
            ReadOnly(false);
            txtMaHV.Text = Add();
            txtHoten.Focus();
        }

        private void btnNhaplai_Click(object sender, EventArgs e)
        {
            ResetTest();
            ReadOnly(false);
            txtMaHV.Text = Add();
        }

        private void btnDangky_Click(object sender, EventArgs e)
        {
            DataTable temp = _dal2.Select_Current(DateTime.Now);
            string _makhoa = temp.Rows[0]["Makhoa"] + "";
            string _malop = cboLop.EditValue + "";

            Catalog.FrmBase x = new Catalog.FrmBase();
            var name = x.Proper(txtHoten.Text);
            var diachi = x.Proper(txtDiachi.Text);

            if (TestInput())
                if (_bll2.CheckRegister(_makhoa, _malop))
                {
                    var o = new DAL.Entities.Hocvien()
                    {
                        MaHV = txtMaHV.Text,
                        Hoten = name,
                        Namsinh = Convert.ToDateTime(dteNamsinh.EditValue),
                        Gioitinh = Convert.ToBoolean(radioGioitinh.EditValue),
                        Diachi = diachi,
                        Dienthoai = txtDienthoai.Text,
                        MalopID = Convert.ToString(cboLop.EditValue)
                    };

                    var oki = _dal.Insert(o,0);
                    if (oki)
                    {
                        //MessageBox.Show("Đã lưu thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        _maHV = txtMaHV.Text;
                        _tenHV = name;

                        if (ckConno.CheckState == CheckState.Checked)
                        {
                            _ghichu = "Còn nợ ";
                            _ghichu += txtSotienno.Text;
                        }
                        else
                            _ghichu = "Đã đóng đủ";


                        FrmDangky_Load(sender, e);
                        EnableButton(false);
                        ResetText();

                        

                        // Lấy số tiền học phí
                        //string _malop = Convert.ToString(cboLop.EditValue);
                        DataTable tmp = new DataTable();
                        tmp = _dal.Select_HP(_malop);
                        _soTien = Convert.ToInt64(tmp.Rows[0]["Hocphi"] + "");

                        FrmHoadon frm = new FrmHoadon();
                        frm._mahv = _maHV;
                        frm._tenhv = _tenHV;
                        frm._sotien = _soTien;
                        frm._ghichu = _ghichu;
                        frm.ShowDialog();
                        btnThem_Click(sender, e);
                    }
                    else
                    {
                        MessageBox.Show("Lỗi! Lưu thất bại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        EnableButton(false);
                        ReadOnly(false);
                    }
                }
                else
                {
                    MessageBox.Show("Lỗi! Lớp này đã đủ học viên, xin vui lòng đăng ký lớp khác", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    EnableButton(false);
                    ReadOnly(false);
                    cboLop.Focus();
                }
            else
                XtraMessageBox.Show("Dữ liệu sai, xin bạn hãy nhập lại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            FrmDangky_Load(sender, e);
            ResetTest();
            txtMaHV.Text = "";
            btnThem.Focus();
        }

        //private void btnHuy_Click(object sender, EventArgs e)
        //{
        //    btnRefresh_Click(sender, e);
        //}


        #region Leave

        private void txtHoten_Leave(object sender, EventArgs e)
        {
            if (txtHoten.Text.Length == 0)
            {
                lbHoten.Visible = true;
                lbHoten.Text = "Họ tên không được trống ...";
            //    txtHoten.Focus();
            }
            else
            {
                lbHoten.Visible = false;                
            }
        }

        private void dteNamsinh_Leave(object sender, EventArgs e)
        {
            if (Convert.ToDateTime(dteNamsinh.EditValue) > DateTime.Now)
            {
                lbNamsinh.Visible = true;
                lbNamsinh.Text = "Năm sinh không được lớn ngày hiện tại ...";
            //    dteNamsinh.Focus();
            }
            else
                lbNamsinh.Visible = false;
        }

        private void txtDienthoai_Leave(object sender, EventArgs e)
        {
            if (txtDienthoai.Text.Length == 0)
            {
                lbDienthoai.Visible = true;
                lbDienthoai.Text = "Bạn phải điền số điện thoại vào ...";
            //    txtDienthoai.Focus();
            }
            else
            {
                lbDienthoai.Visible = false;
            }
        }

        private void txtDiachi_Leave(object sender, EventArgs e)
        {
            if (txtDiachi.Text.Length == 0)
            {
                lbDiachi.Visible = true;
                lbDiachi.Text = "Bạn phải nhập thông tin về địa chỉ ...";
             //   txtDiachi.Focus();
            }
            else
            {
                lbDiachi.Visible = false;
            }
        }

        #endregion

        private void ckConno_CheckedChanged(object sender, EventArgs e)
        {
            if (ckConno.CheckState == CheckState.Checked)
            {
                lbSotienno.Visible = true;
                txtSotienno.Visible = true;
                txtSotienno.Focus();
             }
            else
            {
                lbSotienno.Visible = false;
                txtSotienno.Visible = false;
            }
        }

        
    }
}